Skip to content

如何通过 Modbus TCP 设置/获取控制器模拟量输出值?

保持寄存器:

  • 功能码:0x03 (读取), 0x06 (写入)
  • 寄存器起始地址:0x03 (AO0)

读取 AO0 和 AO1 的示例

发送: 00 01 00 00 00 06 01 03 00 03 00 02
响应: 00 01 00 00 00 07 01 03 04 13 86 0B B6

发送:

  • 00 01 00 00:固定值
  • 00 06:数据长度
  • 01:ID,固定值
  • 03:功能码 (读取)
  • 00 03:起始寄存器地址 (AO0)
  • 00 02:读取 2 个寄存器 (AO0 和 AO1)

响应:

  • 13 86:AO0 的值。十六进制 1386 = 十进制 4998。计算:4998 / 1000 ≈ 5V
  • 0B B6:AO1 的值。十六进制 0BB6 = 十进制 2998。计算:2998 / 1000 ≈ 3V

设置 AO1 为 1V 的示例

发送: 00 01 00 00 00 06 01 06 00 04 03 E8
响应: 00 01 00 00 00 06 01 06 00 04 03 E8

发送:

  • 00 01 00 00:固定值
  • 00 06:数据长度
  • 01:ID,固定值
  • 06:功能码 (写入)
  • 00 04:AO1 的寄存器地址
  • 03 E8:设定值。十六进制 03E8 = 十进制 1000。计算:1000 / 1000 = 1V